package cn.jolyoulu.common.redis.lock;

import org.springframework.stereotype.Component;

import java.util.HashMap;

/**
 * @Author LuZhouJin
 * @Date 2023/5/31
 * Key规则管理器，里面封装的很多Key生成策略
 */
@Component
public class RedisLockRuleManager {

    private final static HashMap<Class<? extends RedisLockKeyRule>, RedisLockKeyRule> map = new HashMap<>();

    /**
     * 添加一个Key策略
     * @param redisLockKeyRule KeyRule的实现类
     */
    public void add(RedisLockKeyRule redisLockKeyRule){
        map.put(redisLockKeyRule.getClass(), redisLockKeyRule);
    }

    /**
     * 获取一个key策略
     * @param keyRule KeyRule实现类的class
     * @return 返回一个KeyRule
     */
    public RedisLockKeyRule get(Class<? extends RedisLockKeyRule> keyRule){
        return map.get(keyRule);
    }

    /**
     * 删除一个key策略
     * @param keyRule KeyRule实现类的class
     */
    public void del(Class<? extends RedisLockKeyRule> keyRule){
        map.remove(keyRule);
    }
}
